Universal Serial Bus (USB) analyzers are used by manufacturers and other developers of USB devices, software (e.g., drivers), firmware, etc. to monitor and analyze communications on the Universal Serial Bus (USB). For example, communications between a target USB devices and a target host to which the device has been connected via a USB port on the target host may be monitored to ensure the device is communicating properly with the target host and vice versa in accordance with applicable USB standards and protocols.
A hardware USB analyzer typically comprises a stand alone or other hardware device having a first set of connectors to enable the analyzer to be connected so as to be able to observe traffic between a target USB device and a target host; hardware and/or firmware to decode signals observed on the USB connection being monitored into USB packets; and hardware, logic, and/or an external connector to enable the analyzer to be connected to an analysis PC and to forward to the analysis PC.
The USB base specifications define protocols that govern communication on the USB bus. Device class codes are defined to enable a USB device to identify itself as being a member of one or more classes of device, for example by including associated USB class code and/or device descriptor information in the “enumeration” information the device communicates to the host upon initial connection. Device classes may have one or more level of subclass, and each of these may have one or more different protocols associated with it. For each USB device class, a class specification defines class-specific protocols. In this way, for example, a USB driver developed independently of a USB device should be usable with the device so long as each conforms to the same class and/or device-specific protocols defined in applicable USB specifications.